#ifndef __THREAD_HPP__
#define __THREAD_HPP__

#include <pthread.h>
#include <functional>

using namespace std;

class Thread {
    typedef function<void()> ThreadCallback; // 重定义回调函数的标签
public:
    Thread(ThreadCallback cb); // Constructor
    ~Thread(); // Destructor
    void start(); // 线程开始执行
    void join(); // 等待线程执行完毕
    
private:
    static void* threadFunc(void* arg); // 线程的函数执行体
    pthread_t pthId; // Linux下的线程类型
    bool _isRunning; // 记录线程是否正在运行 
    ThreadCallback _cb; // 执行任务的函数对象
};

#endif